package cn.shengchao.examstar.rpc.distribute.bi;

import cn.shengchao.examstar.rpc.base.PageResult;
import cn.shengchao.examstar.rpc.base.TransResult;
import cn.shengchao.examstar.rpc.distribute.dto.DistributeNodeUserCreateDto;
import cn.shengchao.examstar.rpc.distribute.req.DistributeNodeInfoQueryPage;
import cn.shengchao.examstar.rpc.distribute.req.DistributeNodePhoneCheckReq;
import cn.shengchao.examstar.rpc.distribute.req.DistributorQueryPage;
import cn.shengchao.examstar.rpc.distribute.req.DistributorStudentQueryPage;
import cn.shengchao.examstar.rpc.distribute.resp.*;

/**
 * @program: examstarapi
 * @description: 分销节点商业整合服务
 * @author: Xiong weiqiang
 * @create: 2025-03-26 18:04
 */
public interface DistributeNodeBI {
    /**
     * 分销节点信息
     * @param userId
     * @param distributeType
     * @return
     */
    DistributeNodeInfoWithUpLevelRespEntity queryDistributeNodeInfoWithUpLevel(Long userId, Integer distributeType);
    /**
     * 校验手机号是否可以创建分销用户
     * @param checkReq
     * @return
     */
    DistributeNodePhoneCheckResult checkPhoneForDistributeCreate(DistributeNodePhoneCheckReq checkReq);

    /**
     * 换绑分销用户角色链
     * @param userId
     * @param distributeRoleCode
     * @param upperUserId
     * @return
     */
    TransResult<String> changeSaleDistributeUserUpLevel(Long userId, String distributeRoleCode, Long upperUserId);
    /**
     * 换绑内容用户角色链
     * @param userId
     * @param distributeRoleCode
     * @param upperUserId
     * @return
     */
    TransResult<String> changeContentDistributeUserUpLevel(Long userId,  String distributeRoleCode, Long upperUserId);
    /**
     * 市场分销链用户列表
     */
    PageResult<DistributeNodeInfoRespEntity> queryDistributeNodeInfoPageResult(DistributeNodeInfoQueryPage pageQuery);
    /**
     * 市场加盟商用户列表
     */
    PageResult<DistributeNodeInfoRespEntity> querySaleProxyDistributeNodeInfoPageResult(DistributeNodeInfoQueryPage pageQuery);
    /**
     * 内容分销链用户列表
     */
    PageResult<DistributeNodeInfoRespEntity> queryContentDistributeNodeInfoPageResult(DistributeNodeInfoQueryPage pageQuery);

    /**
     * 分销商列表
     */
    PageResult<DistributorRespEntity> queryDistributorPageResult(DistributorQueryPage pageQuery);

    /**
     * 分销商学员列表
     */
    PageResult<DistributorStudentEntity> queryDistributorStudentPageResult(DistributorStudentQueryPage pageQuery);

}